package leetcode.q203;

import leetcode.ListNode;

/**
 * <a href="https://leetcode.cn/problems/remove-linked-list-elements/description/">...</a>
 * 203. 移除链表元素
 *  使用递归，构建删除逻辑
 */
public class Solution3 {
    // 宏观语义：移除 head为头单向链表中的所有val元素
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return head;  // 每次处理一个节点，到最后一个节点为null时递归结束 -> 递归头，条件
        head.next = removeElements(head.next, val); // 处理一个， 链接后序节点
        return head.val == val ? head.next : head;  // 当前节点的处理逻辑
    }
}